
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.servlets;


import agb.Modelo.*;

import agb.Modelo.Asistencias;
import agb.Modelo.Docente;
import agb.Modelo.Horarios;
import agb.Modelo.Promedios;
import agb.Modelo.ProyectosComunicados;
import agb.Modelo.Publicaciones;
import agb.Modelo.UsuarioWeb;
import agb.Modelo.Utilidades;

import com.google.gson.Gson;
import java.io.*;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;


import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import  java.util.Properties;


import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Inicial
 */

public class SrvServletAdministrador extends HttpServlet {
   
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        PrintWriter out = response.getWriter();
        try {
           String accion = request.getParameter("accion");
           if(accion.equalsIgnoreCase("listaPersonas")){
                listaPersonas(request, response);
           }else{
                if(accion.equalsIgnoreCase("registroUsuarioPre")){
                    registroUsuarioPre(request, response);
                }else{
                    if(accion.equalsIgnoreCase("registroUsuario")){
                        registroUsuario(request, response);
                    }else{
                        if(accion.equalsIgnoreCase("cambioDatos")){
                            actualizaUsuarioWeb(request, response);
                        }else{
                            if(accion.equalsIgnoreCase("listaUsuario")){
                                listaUsuariosWeb(request, response);
                            }else{
                                if(accion.equalsIgnoreCase("modificaUsuarioPre")){
                                    modificaUsuarioPre(request, response);
                                }else{
                                    if(accion.equalsIgnoreCase("modificaUsuario")){
                                        modificaUsuario(request, response);
                                    }else{
                                        if(accion.equalsIgnoreCase("leerMensaje")){
                                            leerMensaje(request, response);
                                        }else{
                                            if(accion.equalsIgnoreCase("responderMensaje")){
                                                responderMensaje(request, response);
                                            }else{
                                                if(accion.equalsIgnoreCase("eliminaMensaje")){
                                                    eliminarMensaje(request, response);
                                                }else{
                                                    if(accion.equalsIgnoreCase("registraAnuncio")){
                                                        registroAnuncio(request, response);
                                                    }else{
                                                        if(accion.equalsIgnoreCase("modificaAnuncioPre")){
                                                            modificaAnuncioPre(request, response);
                                                        }else{
                                                            if(accion.equalsIgnoreCase("modificaAnuncio")){
                                                                modificaAnuncio(request, response);
                                                            }else{
                                                                if(accion.equalsIgnoreCase("leerComunicado")){
                                                                    detalleComunicado(request, response);
                                                                }else{                                                                    
                                                                    if(accion.equalsIgnoreCase("listaAlumnos")){
                                                                        listaAlumnos(request, response);
                                                                    }else{
                                                                        if(accion.equalsIgnoreCase("comboPeriodo")){
                                                                            comboPeriodo(request, response);
                                                                        }else{
                                                                            if(accion.equalsIgnoreCase("notas")){
                                                                                notasPeriodo(request, response);
                                                                            }else{
                                                                                if(accion.equalsIgnoreCase("horariosDocente")){
                                                                                    horariosDocente(request, response);
                                                                                }else{
                                                                                    if(accion.equalsIgnoreCase("resumenAsistencia")){
                                                                                        ResumenAsistencia(request, response);
                                                                                    }else{
                                                                                        if(accion.equalsIgnoreCase("asistenciaCalendario")){
                                                                                            calendarioAsistencia(request, response);
                                                                                        } 
                                                                                     else
                                                                                        {
                                                                                            if(accion.equalsIgnoreCase("listarAnuncio"))
                                                                                            {
                                                                                                listarAnuncio(request, response);
                                                                                            }
                                                                                            else
                                                                                            {
                                                                                                if(accion.equalsIgnoreCase("eliminarAnuncio"))
                                                                                                {
                                                                                                    eliminarAnuncio(request, response);
                                                                                                }
                                                                                                else if(accion.equalsIgnoreCase("descargaArticulo")){
                                                                                                        descargas(request, response);
                                                                                                    }else if(accion.equalsIgnoreCase("descargaCurricula")){
                                                                                                        descargas(request, response);
                                                                                                    } else if(accion.equalsIgnoreCase("descargaRegla")){
                                                                                                        descargas(request, response);
                                                                                                    } else if(accion.equalsIgnoreCase("descargaTramite")){
                                                                                                        descargas(request, response);
                                                                                                    }
                                                                                                    else
                                                                                                        if(accion.equalsIgnoreCase("comuActividad")){
                                                                                                        comunicadoActividad(request, response);
                                                                                                    }else if(accion.equalsIgnoreCase("comuAnuncio")){
                                                                                                        comunicadoActividad(request, response);
                                                                                                    } else if(accion.equalsIgnoreCase("comuReunion")){
                                                                                                        comunicadoActividad(request, response);
                                                                                                    }else if(accion.equalsIgnoreCase("comuCalendario")){
                                                                                                        comunicadoActividad(request, response);
                                                                                                    } else if(accion.equalsIgnoreCase("infoAlumno")){
                                                                                                        informacionAlumno(request, response);
                                                                                                    }else if(accion.equalsIgnoreCase("eliminarUsuarioWeb")){
                                                                                                        eliminarUsuarioWeb(request, response);
                                                                                                    }else if(accion.equalsIgnoreCase("mensajes")){
                                                                                                        mensajes(request, response);
                                                                                                    }
                                                                                                    else
                                                                                                        if(accion.equalsIgnoreCase("configuracion"))
                                                                                                        {
                                                                                                            configuracion(request, response);
                                                                                                        }
                                                                                                
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
           }
           
        
        }
        finally { 
            out.close();
        }
    } 
    
     private String descarga(int tipo)
    {
        String rpta="";
        switch(tipo)
        {
            case 4: rpta="Articulo"; break;
            case 5: rpta="Reglamento"; break;
            case 6: rpta="FormTramite"; break;
            case 7: rpta="Curricula"; break;
        }
        return rpta;
    } protected void configuracion(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
     {
          response.setContentType("text/html;charset=UTF-8");
          
           this.getServletContext().getRequestDispatcher("/dinamica/administrador/Configuracion/Configuracion.jsp").forward(request, response);
     }     
  protected void descargas(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
     {
          response.setContentType("text/html;charset=UTF-8");
          PrintWriter out = response.getWriter();
          
          try
          {
               HttpSession session = request.getSession(true);
               
                ArrayList<Publicaciones> LDescargas = new ArrayList<Publicaciones>();
                int tipo=tipoDescarga(request.getParameter("accion"));
                LDescargas = Publicaciones.listaDescargas(tipo);
               
                request.setAttribute("descargas", LDescargas);
             this.getServletContext().getRequestDispatcher("/dinamica/administrador/Descargas/Descarga"+descarga(tipo)+".jsp").forward(request, response);
          }
          finally
          {
               out.close();
          }
     }  
      private String tipoActividad(int tipo)
 {
     String rpta="";
     switch(tipo)
     {
         case 1:rpta="Reunion"; break;
         case 2:rpta="Actividad"; break;
         case 3:rpta="Calendario";break;
         case 4:rpta="Anuncio";  
     }
     
     return rpta;
 }
          private int tipoComunicado(String accion)
 {
     if(accion.equalsIgnoreCase("comuActividad"))
     {
         return 2;
     }
     else
     {
         if(accion.equalsIgnoreCase("comuAnuncio"))
         {
             return 4;
         }
         else
         {
             if(accion.equalsIgnoreCase("comuReunion"))
             {
                 return 1;
             }
             else
             {
                 //Si es comunCalendario
                     return 3;
                 
             }
         }
     }
 }
   protected void comunicadoActividad(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
      
        PrintWriter out = response.getWriter();
        try 
        {
            HttpSession session = request.getSession(true);
            
            ArrayList<ProyectosComunicados> LReuniones = new ArrayList<ProyectosComunicados>();
     int tipoActividad=tipoComunicado(request.getParameter("accion"));
     LReuniones = ProyectosComunicados.listarComunicados(tipoActividad);
             request.setAttribute("actividad", LReuniones);
             System.out.println("Hooooooolaaaaaaaaaaaaa: "+request.getParameter("accion"));
             this.getServletContext().getRequestDispatcher("/dinamica/administrador/Comunicados/Comunicado"+tipoActividad(tipoActividad)+".jsp").forward(request, response);
        }
        finally 
        {
            out.close();
        }
   }
   
  
  
 private int tipoDescarga(String tipo)
    {
        if(tipo.equalsIgnoreCase("descargaArticulo"))
        {
            return 4;
        }
        else
        {
            if(tipo.equalsIgnoreCase("descargaRegla"))
            {
                return 5;
            }
            else
            {
                if(tipo.equalsIgnoreCase("descargaTramite"))
                {
                    return 6;
                }
                else
                {   
                     //descargaCurricula 
                        return  7;
                }
            }
        }
    }
    
    protected void listarAnuncio(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        PrintWriter out = response.getWriter();
        try {
            
                HttpSession sesion = request.getSession(true);
                 ArrayList<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
       
            
                 LPersonas = UsuarioWeb.listaAnunciosWeb();
                 StringBuilder sb = new StringBuilder();
                 for(UsuarioWeb user:LPersonas)
                 {
                     String actividad="INACTIVO";
                     if(user.getEstadoAnuncio().equalsIgnoreCase("A"))
                     {
                         actividad="ACTIVO";
                         
                     }
                     sb.append("[\"" +"<input class='link' valor='"+user.getCodAnuncio()+"' type='checkbox'/>"+"\",\""+user.getAnuncioWeb() + "\",\"" + user.getFechaAnuncioWeb()+"\",\""+actividad+ "\",\"<a href='javascript:showDialogs("+ user.getCodAnuncio()+ ");' class='edit_icon' title='Editar'></a>\"],");
                 }
                 
                 String str = sb.substring(0,sb.length()-1);
             
                     if(str.equals(""))
                     {
                                str = "[]";
                     }else
                     {
                                str = "[" + str + "]";
                     }
                    request.setAttribute("anuncios",str);
                   this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/mantenimientoAnunciosWeb.jsp").forward(request,response);
             } finally 
        { 
            out.close();
        }
    }
    

   protected void listaPersonas(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        
        PrintWriter out = response.getWriter();
        try {  
            List<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
            LPersonas = UsuarioWeb.listaPersonas();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" "  + actual.getApellidoPaternoUsuarioWeb() +  "\",\"" + actual.getApellidoMaternoUsuarioWeb() +  "\",\"" + actual.getNombreUsuarioWeb()   + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='add_icon' title='Registrar'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            request.setAttribute("personas", str);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/registroUsuarios.jsp").forward(request, response);
            
      
        } finally { 
            out.close();
        }
    }

   protected void listaAlumnos(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        try {
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());   
            String parametro = request.getParameter("parametro");

            if(parametro!=null)
            {
            
            
                 ArrayList<Utilidades> LPersonas = new ArrayList<Utilidades>();
                   LPersonas = Utilidades.listaAlumnos(parametro);
           
            response.getWriter().write(new Gson().toJson(LPersonas));
            }
            else
            {
      
                  UsuarioWeb oUsuario = new UsuarioWeb();
                  oUsuario = UsuarioWeb.datosUsuarioWeb(1017);
     
                  request.setAttribute("usuario", oUsuario);
     
     
 
                  this.getServletContext().getRequestDispatcher("/dinamica/administrador/Horarios/horarioAlumno.jsp").forward(request,response);   
            }
         
//              StringBuilder sb = new StringBuilder();
//            for(Utilidades actual:LPersonas){
//                sb.append("[\"" 
//                        + "<input type='checkbox' class='file' value='" 
//                        + actual.getCodPersona() + "'/>" 
//                        + "\",\"" + actual.getNombreAlumno() 
//                        + "\",\"" + actual.getGrado()  
//                        + "\",\"" + actual.getSeccion() 
//                        + "\",\"" + actual.getNivel() 
//                        + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='edit_icon' title='Horario'></a>\"],");
//            }
//            
//            String str = "";
//            System.out.println(sb.toString());
//            if(sb.length()==0){
//                str = "[]";
//            }else{
//                str = sb.substring(0,sb.length()-1);
//                str = "[" + str + "]";
//            }
//            System.out.println("str: " + str);
//            
//            request.setAttribute("listaAlumnos", str);

          
        } finally {
            out.close();
        }
    }
   
      protected void listaUsuariosWeb(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

             List<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
            LPersonas = UsuarioWeb.listaUsuariosWeb();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" " + "<input type='checkbox' class='file' value='" + actual.getCodPersona() + "'/>" + "\",\""   + actual.getApellidoPaternoUsuarioWeb() +  "\",\"" + actual.getApellidoMaternoUsuarioWeb() +  "\",\"" + actual.getNombreUsuarioWeb() +  "\",\"" + actual.getUsernameUsuarioWeb()  + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='edit_icon' title='Registrar'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            request.setAttribute("usuarios", str);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/modificacionUsuarios.jsp").forward(request, response);
      
        } finally { 
            out.close();
        }
    }
      
      
   protected void informacionAlumno(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession session = request.getSession(true);
            // RequestDispatcher rd;
            
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());
          
            ArrayList<Horarios> LHorarios = new ArrayList<Horarios>();
            LHorarios = Horarios.HorarioAlumnoPorCodigoAñoMatricula(cod);
      
            Utilidades oUtilidad = new Utilidades();
            oUtilidad =  Utilidades.GradoSeccionAlumno(cod);
           
            request.setAttribute("horarios", LHorarios);
            request.setAttribute("utilidad", oUtilidad);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Horarios/horarioEspecifico.jsp").forward(request,response);
        } finally {
            out.close();
        }
    }
   
   protected void registroUsuarioPre(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            int codPersona = Integer.parseInt(request.getParameter("codPersona"));
            UsuarioWeb oUsuario = new UsuarioWeb();
            int rpta = 0;            
            rpta = UsuarioWeb.esAlumno(codPersona);
            if(rpta>0){
                oUsuario.setTipoUsuarioWeb("ALUMNO");
                oUsuario.setCodTipoUsuarioWeb(3);
            }else{
                rpta = UsuarioWeb.esApoderado(codPersona);
                if(rpta>0){
                    oUsuario.setTipoUsuarioWeb("APODERADO");
                    oUsuario.setCodTipoUsuarioWeb(4);
                }else{
                    rpta = UsuarioWeb.esDocente(codPersona);
                    if(rpta>0){
                        oUsuario.setTipoUsuarioWeb("DOCENTE");
                        oUsuario.setCodTipoUsuarioWeb(5);
                    }else{
                          oUsuario.setTipoUsuarioWeb("USUARIO WEB NO PERTENECE A NINGUN GRUPO DE USUARIO");
                    }
                }        
            }
           
            if(rpta>0){                
                UsuarioWeb nombre = new UsuarioWeb();
                nombre = UsuarioWeb.usuario(codPersona);
                String username = "";                
                username = UsuarioWeb.UserName(nombre.getNombreUsuarioWeb(), nombre.getApellidoPaternoUsuarioWeb(), nombre.getApellidoMaternoUsuarioWeb());
                oUsuario.setUsernameUsuarioWeb(username);
                oUsuario.setNombreUsuarioWeb(nombre.getNombreUsuarioWeb());
                oUsuario.setApellidoPaternoUsuarioWeb(nombre.getApellidoPaternoUsuarioWeb());
                oUsuario.setApellidoMaternoUsuarioWeb(nombre.getApellidoMaternoUsuarioWeb());
                oUsuario.setCodPersona(codPersona);
                if(oUsuario.getCodTipoUsuarioWeb()==3){
                    oUsuario.setPasswordUsuarioWeb(UsuarioWeb.passwordAlumno(codPersona)) ;
                }else{
                    if(oUsuario.getCodTipoUsuarioWeb()==4){
                        oUsuario.setPasswordUsuarioWeb(username) ;
                    }else{
                        if(oUsuario.getCodTipoUsuarioWeb()==5){
                            oUsuario.setPasswordUsuarioWeb(UsuarioWeb.passwordDocente(codPersona)) ;
                        }
                    }
                }      
            }          
            request.setAttribute("persona", oUsuario);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/personasForm.jsp").forward(request, response);
        } finally { 
            out.close();
        }
    }
   
   protected void registroUsuario(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario.setCodPersona(Integer.parseInt(request.getParameter("codPersona")));
            oUsuario.setCodTipoUsuarioWeb(Integer.parseInt(request.getParameter("codTipo")));
            oUsuario.setUsernameUsuarioWeb(request.getParameter("username"));
            oUsuario.setPasswordUsuarioWeb(request.getParameter("password"));
            UsuarioWeb.registroUsuarioWeb(oUsuario);
            List<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
            LPersonas = UsuarioWeb.listaPersonas();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" "  + actual.getApellidoPaternoUsuarioWeb() +  "\",\"" + actual.getApellidoMaternoUsuarioWeb() +  "\",\"" + actual.getNombreUsuarioWeb()   + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='add_icon' title='Registrar'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            out.println(str);
      
        } finally { 
            out.close();
        }
    }
   
   protected void modificaAnuncio(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String mensaje = "";
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario.setCodAnuncio(Integer.parseInt(request.getParameter("codigo")));            
            oUsuario.setAnuncioWeb(request.getParameter("txtAnuncio"));
            oUsuario.setWebAnuncio(request.getParameter("txtWeb"));
            oUsuario.setFechaAnuncioWeb(request.getParameter("txtFecha"));
            oUsuario.setEstadoAnuncio(request.getParameter("cboEstado"));
           // String next = "/dinamica/administrador/include_mantenimiento/admi_consultaModificaAnuncios.jsp";
            if(UsuarioWeb.modificaAnuncioWeb(oUsuario)){
                mensaje = "Exito";
            }else{
                mensaje = "Fallo";
            }
            
              ArrayList<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
       
            
                 LPersonas = UsuarioWeb.listaAnunciosWeb();

                 UsuarioWeb u=new UsuarioWeb();
                 u.setMensaje(mensaje);
                 LPersonas.add(u);
                
            out.print(new Gson().toJson(LPersonas));
//            sesion.setAttribute("mensaje", mensaje);
//            rd = this.getServletContext().getRequestDispatcher(next);
//            request.setAttribute("r_estilo", true);
//            rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
   
     protected void registroAnuncio(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String mensaje = "";
            UsuarioWeb oUsuario = new UsuarioWeb();     
            oUsuario.setAnuncioWeb(request.getParameter("txtAnuncio"));
            oUsuario.setFechaAnuncioWeb(request.getParameter("txtFecha"));
            oUsuario.setWebAnuncio(request.getParameter("txtWeb"));            
            //String next = "/dinamica/administrador/include_mantenimiento/admi_registroAnuncios.jsp";
            if(UsuarioWeb.registroAnuncioWeb(oUsuario))
            {
                mensaje = "Éxito";
            }else
            {
                mensaje = "Fallo";
            }
            ArrayList<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
       
            
                 LPersonas = UsuarioWeb.listaAnunciosWeb();

                 UsuarioWeb u=new UsuarioWeb();
                 u.setMensaje(mensaje);
                 LPersonas.add(u);
            out.print(new Gson().toJson(LPersonas));
           // sesion.setAttribute("mensaje", mensaje);
           // rd = this.getServletContext().getRequestDispatcher(next);
            //request.setAttribute("r_estilo", true);
            //rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
     
  protected void modificaAnuncioPre(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {       
            
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            int codAnuncio = Integer.parseInt(request.getParameter("codigo"));
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario = UsuarioWeb.anuncioWeb(codAnuncio);                 
        //    String next = "/dinamica/administrador/include_mantenimiento/admi_modificaAnuncio.jsp";            
//            sesion.setAttribute("anuncioWeb", oUsuario);
//            rd = this.getServletContext().getRequestDispatcher(next);
//            request.setAttribute("r_estilo", true);
//            rd.forward(request,response);
            out.println(new Gson().toJson(oUsuario));
      
        } finally { 
            out.close();
        }
    }
   
      protected void actualizaUsuarioWeb(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {    
            
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String mensaje = "";
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario.setCodPersona(Integer.parseInt(request.getParameter("codPersona")));
            oUsuario.setPasswordUsuarioWeb(request.getParameter("txtPass"));
            oUsuario.setPreguntaUsuarioWeb(request.getParameter("txtPregunta"));
            oUsuario.setRespuestaUsuarioWeb(request.getParameter("txtRespuesta"));            
            String next = "/dinamica/frames/principal.jsp";
            if(UsuarioWeb.actualizaUsuarioWeb(oUsuario)){
                mensaje = "Usuario web actualizado con Exito!!";
            }else{
                mensaje = "Usuario web NO se pudo actualizar!!";
            }
            sesion.setAttribute("mensaje", mensaje);
            rd = this.getServletContext().getRequestDispatcher(next);
            request.setAttribute("r_estilo", true);
            rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
      
      protected void modificaUsuarioPre(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            UsuarioWeb oUsuario = new UsuarioWeb();
            int cod = Integer.parseInt(request.getParameter("codPersona"));
            oUsuario = UsuarioWeb.datosUsuarioWeb(cod);
            request.setAttribute("usuario", oUsuario);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/usariosForm.jsp").forward(request, response);
        } finally { 
            out.close();
        }
    }
      
      protected void modificaUsuario(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario.setCodPersona(Integer.parseInt(request.getParameter("codPersona")));
            oUsuario.setPasswordUsuarioWeb(request.getParameter("txtPass"));
            oUsuario.setEstadoUsuarioWeb(request.getParameter("estado"));
            UsuarioWeb.actualizaUsuarioWebAdmi(oUsuario);
            List<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
            LPersonas = UsuarioWeb.listaUsuariosWeb();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" " + "<input type='checkbox' class='file' value='" + actual.getCodPersona() + "'/>" + "\",\""   + actual.getApellidoPaternoUsuarioWeb() +  "\",\"" + actual.getApellidoMaternoUsuarioWeb() +  "\",\"" + actual.getNombreUsuarioWeb() +  "\",\"" + actual.getUsernameUsuarioWeb()  + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='edit_icon' title='Modificar'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            out.println(str);
        } finally { 
            out.close();
        }
    }
      
   protected void leerMensaje(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String next = "/dinamica/administrador/include_usuarios/admi_leerResponderContacto.jsp";
            int codMensaje = Integer.parseInt(request.getParameter("codMensaje"));
            UsuarioWeb oUsuario = new UsuarioWeb();
            oUsuario = UsuarioWeb.ComentariosUsuarioWeb(codMensaje);            
            sesion.setAttribute("correoContacto", oUsuario);
            rd = this.getServletContext().getRequestDispatcher(next);
            request.setAttribute("r_estilo", true);
            rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
   
   protected void responderMensaje(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String next = "/dinamica/administrador/include_usuarios/admi_consultaContactos.jsp";
            String email = request.getParameter("email");
            String rpta = request.getParameter("txtRespuesta");
            String asunto = request.getParameter("txtAsunto");
            String mensaje = "";        
        try{
            // Propiedades de la conexión
            Properties props = new Properties();
            props.setProperty("mail.smtp.host", "smtp.gmail.com");
            props.setProperty("mail.smtp.starttls.enable", "true");
            props.setProperty("mail.smtp.port", "587");
            props.setProperty("mail.smtp.user", "grahambellmensajes@gmail.com");
            props.setProperty("mail.smtp.auth", "true");

            // Preparamos la sesion
            Session session = Session.getDefaultInstance(props);

            // Construimos el mensaje
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("grahambellmensajes@gmail.com"));
            message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(email));
            message.setSubject(asunto);
            message.setText(
               rpta);

            // Lo enviamos.
            Transport t = session.getTransport("smtp");
            t.connect("grahambellmensajes@gmail.com", "grahambell");
            t.sendMessage(message, message.getAllRecipients());

            // Cierre.
            t.close();
            
            mensaje = "Mensaje enviado con EXITO!!";
        }
        catch (Exception e){
            e.printStackTrace();
        }
            
            sesion.setAttribute("mensaje", mensaje);
            rd = this.getServletContext().getRequestDispatcher(next);
            request.setAttribute("r_estilo", true);
            rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
   
   
   protected void eliminarAnuncio(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
   {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try
        {
               HttpSession sesion = request.getSession(true);
               RequestDispatcher rd;
               String eliminar=request.getParameter("anuncios");
               String []todoEliminar=eliminar.split("-");
               System.out.println("Todo Eliminar: "+todoEliminar);
               for(String eli:todoEliminar)
               {
                   UsuarioWeb.eliminarAnuncio(Integer.parseInt(eli));
               }
               
                ArrayList<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb>();
                LPersonas = UsuarioWeb.listaAnunciosWeb();

                
                 LPersonas.add(new UsuarioWeb());
            out.print(new Gson().toJson(LPersonas));
        }
        finally 
        { 
            out.close();
        }
   }
   
      protected void eliminarUsuarioWeb(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            String[] codigos = request.getParameter("codigos").split(",");
            for (int i = 0; i < codigos.length; i++) {
                UsuarioWeb.eliminarUsuarioWeb(Integer.parseInt(codigos[i]));
            }
            List<UsuarioWeb> LPersonas = UsuarioWeb.listaUsuariosWeb();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" " + "<input type='checkbox' class='file' value='" + actual.getCodPersona() + "'/>" + "\",\""   + actual.getApellidoPaternoUsuarioWeb() +  "\",\"" + actual.getApellidoMaternoUsuarioWeb() +  "\",\"" + actual.getNombreUsuarioWeb() +  "\",\"" + actual.getUsernameUsuarioWeb()  + "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='edit_icon' title='Modificar'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            out.println(str);
        } finally {
            out.close();
        }
    }
      
      protected void mensajes(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            List<UsuarioWeb> LPersonas = new ArrayList<UsuarioWeb> ();
            LPersonas = UsuarioWeb.listaComentariosUsuarioWeb();
            StringBuilder sb = new StringBuilder();
            for(UsuarioWeb actual:LPersonas){
                sb.append("[\" <input type='checkbox' class='file' value='" + actual.getCodContactoUsuarioWeb() + "'/>\",\""   + actual.getNombreUsuarioWeb() +  "\",\"" + actual.getLocalidadUsuarioWeb() +  "\",\"" + actual.getTelefonoUsuarioWeb() +  "\",\"" + actual.getEmailUsarioWeb()  +  "\",\"" + actual.getFechaAnuncioWeb()==null?"":actual.getFechaAnuncioWeb()+ "\",\"<a href='javascript:showDialog("+ actual.getCodPersona() + ");' class='approve_icon' title='Ver'></a>\"],");
            }
            String str = "";
            if(sb.length()==0){
                str = "[]";
            }else{
                str = sb.substring(0,sb.length()-1);
                str = "[" + str + "]";
            }
            System.out.println("str: " + str);
            request.setAttribute("mensajes", str);
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/Usuarios/mensajesContactenos.jsp").forward(request, response);
        } finally {
            out.close();
        }
    }
   
 protected void eliminarMensaje(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {            
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String mensaje = "";            
            int codMensaje = Integer.parseInt(request.getParameter("codMensaje"));                    
            String next = "/dinamica/administrador/include_usuarios/admi_consultaContactos.jsp";
            if(UsuarioWeb.eliminaMensajeContacto(codMensaje)){
                mensaje = "Mensaje Eliminado con Exito!!";
            }else{
                mensaje = "Mensaje NO se pudo Eliminar!!";
            }
            sesion.setAttribute("mensaje", mensaje);
            rd = this.getServletContext().getRequestDispatcher(next);
            request.setAttribute("r_estilo", true);
            rd.forward(request,response);
      
        } finally { 
            out.close();
        }
    }
 
 protected void detalleComunicado(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            HttpSession sesion = request.getSession(true);
            RequestDispatcher rd;
            String next = "/dinamica/administrador/include_mantenimiento/admi_eliminaComunicado.jsp";
            int codComunicado = Integer.parseInt(request.getParameter("codComunicado"));
            ProyectosComunicados oComunicado = new ProyectosComunicados();
            oComunicado = ProyectosComunicados.detalleComunicados(codComunicado);//           
            sesion.setAttribute("Dcomunicado", oComunicado);
            rd = this.getServletContext().getRequestDispatcher(next);
            request.setAttribute("r_estilo", true);
            rd.forward(request,response);      
        } finally { 
            out.close();
        }
    }
 
    
  
    protected void comboPeriodo(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           HttpSession session = request.getSession(true);
            RequestDispatcher rd;
            String codPersona = request.getParameter("codPersona");
            request.setAttribute("r_estilo", true);
            int cod = Integer.parseInt(codPersona);
            Date fechaActual = new Date();
            Utilidades oUtil = new Utilidades();
            oUtil = Utilidades.GradoSeccionAlumno(cod);
            int codNivel = oUtil.getCodNivel();
            int anio = 0;
            if(oUtil.getAnioMatriculas()==null){
                anio = 0;
            }else{
                anio = Integer.parseInt(oUtil.getAnioMatriculas());
            }
           Vector<String> LPeriodos = null;
         Vector<String> LMuestraPeriodos = null;
//                 if(codNivel==4){
                LPeriodos = new Vector<String>();
                LPeriodos.add("1- Primer Mes");
                LPeriodos.add("2- Segundo Mes");
                LPeriodos.add("21- Primer Bimestre");
                LPeriodos.add("3- Tercer Mes");
                LPeriodos.add("4- Cuarto Mes");
                LPeriodos.add("22- Segundo Bimestre");
                LPeriodos.add("5- Quinto Mes");
                LPeriodos.add("6- Sexto Mes");
                LPeriodos.add("23- Tercer Bimestre");
                LPeriodos.add("7- Septimo Mes");
                LPeriodos.add("8- Octavo Mes");
                LPeriodos.add("24- Cuarto Bimestre");
            if(anio < (fechaActual.getYear() + 1900)){
                 LMuestraPeriodos = new Vector<String>();
                 LMuestraPeriodos = LPeriodos;
            }else{
                LMuestraPeriodos = new Vector<String>();
                if((((fechaActual.getMonth()+1)==3) && (fechaActual.getDate()>5)) || (((fechaActual.getMonth()+1)==4) && (fechaActual.getDate()<=5))){
                    for(int i=0;i<1;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==4) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==5) && (fechaActual.getDate()<=5)){
                   for(int i=0;i<3;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==5) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==6) && (fechaActual.getDate()<=5)){
                    for(int i=0;i<4;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==6) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==7) && (fechaActual.getDate()<=5)){
                    for(int i=0;i<6;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==7) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==8) && (fechaActual.getDate()<=5)){
                   for(int i=0;i<7;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==8) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==9) && (fechaActual.getDate()<=5)){
                    for(int i=0;i<9;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==9) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==10) && (fechaActual.getDate()<=5)){
                   for(int i=0;i<10;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
                if((((fechaActual.getMonth()+1)==10) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==11) && (fechaActual.getDate()<=5)){
                      for(int i=0;i<12;i++){
                        String tmp = LPeriodos.get(i);
                        LMuestraPeriodos.add(tmp);
                    }
                }
            }
//         }
//         if(codNivel==7){
//             LPeriodos = new Vector<String>();
//                LPeriodos.add("1- Primer Mes");
//                LPeriodos.add("2- Segundo Mes");
//                LPeriodos.add("3- Tercer Mes");
//                LPeriodos.add("31- Primer Trimestre");
//                LPeriodos.add("4- Cuarto Mes");
//                LPeriodos.add("5- Quinto Mes");
//                LPeriodos.add("6- Sexto Mes");
//                LPeriodos.add("32- Segundo Trimestre");
//                LPeriodos.add("7- Septimo Mes");
//                LPeriodos.add("8-  Octavo Mes");
//                LPeriodos.add("9- Noveno Mes");
//                LPeriodos.add("33- Tercer Trimestre");
//            if(anio < (fechaActual.getYear() + 1900)){
//                 LMuestraPeriodos = new Vector<String>();
//                 LMuestraPeriodos = LPeriodos;
//            }else{
//                LMuestraPeriodos = new Vector<String>();
//                if((((fechaActual.getMonth()+1)==3) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==4) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<1;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==4) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==5) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<2;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==5) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==6) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<4;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==6) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==7) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<5;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==7) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==8) && (fechaActual.getDate()<=5)){
//                   for(int i=0;i<6;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==8) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==9) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<8;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==9) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==10) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<9;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==10) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==11) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<10;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//                if((((fechaActual.getMonth()+1)==11) && (fechaActual.getDate()>5))|| ((fechaActual.getMonth()+1)==12) && (fechaActual.getDate()<=5)){
//                    for(int i=0;i<12;i++){
//                        String tmp = LPeriodos.get(i);
//                        LMuestraPeriodos.add(tmp);
//                    }
//                }
//            }
//         }
         if(codNivel==0){
            LMuestraPeriodos = new Vector<String>();
         }
            String next = "/dinamica/administrador/include_consulta/notas_periodo.jsp";
            session.setAttribute("codPersona", codPersona);
            session.setAttribute("periodos", LPeriodos);
            request.setAttribute("nombre", request.getParameter("nombre"));
            rd=this.getServletContext().getRequestDispatcher(next);
            rd.forward(request,response);
        } finally {
            out.close();
        }
    }

    protected void notasPeriodo(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           HttpSession session = request.getSession(true);
            RequestDispatcher rd;
            int periodo = Integer.parseInt(request.getParameter("cboPeriodo"));
            int codigo  = Integer.parseInt(request.getParameter("codigo"));

            ArrayList<Promedios> LNotas = new ArrayList<Promedios>();
            Promedios cabecera = new Promedios();
            ArrayList<Promedios> LPromMes1 = new ArrayList<Promedios>();
            ArrayList<Promedios> LPromMes2 = new ArrayList<Promedios>();
            ArrayList<Promedios> LPromMes3 = new ArrayList<Promedios>();
            ArrayList<Promedios> LNotasBimestrales = new ArrayList<Promedios>();
            ArrayList<Promedios> LNotasTrimestrales = new ArrayList<Promedios>();
            String next = "";
            switch(periodo){
                case 1:
                    LNotas = Promedios.notasMes01(codigo);
                    cabecera.setNota1(1);
                    cabecera.setNota2(2);
                    cabecera.setNota3(3);
                    cabecera.setMensual(1);
                    break;
                case 2:
                    LNotas = Promedios.notasMes02(codigo);
                    cabecera.setNota1(4);
                    cabecera.setNota2(5);
                    cabecera.setNota3(6);
                    cabecera.setMensual(2);
                    break;
                case 3:
                    LNotas = Promedios.notasMes03(codigo);
                    cabecera.setNota1(7);
                    cabecera.setNota2(8);
                    cabecera.setNota3(9);
                    cabecera.setMensual(3);
                    break;
                case 4:
                    LNotas = Promedios.notasMes04(codigo);
                    cabecera.setNota1(10);
                    cabecera.setNota2(11);
                    cabecera.setNota3(12);
                    cabecera.setMensual(4);
                    break;
                case 5:
                    LNotas = Promedios.notasMes05(codigo);
                    cabecera.setNota1(13);
                    cabecera.setNota2(14);
                    cabecera.setNota3(15);
                    cabecera.setMensual(5);
                    break;
                case 6:
                     LNotas = Promedios.notasMes06(codigo);
                     cabecera.setNota1(16);
                     cabecera.setNota2(17);
                     cabecera.setNota3(18);
                     cabecera.setMensual(6);
                    break;
                case 7:
                     LNotas = Promedios.notasMes07(codigo);
                     cabecera.setNota1(19);
                     cabecera.setNota2(20);
                     cabecera.setNota3(21);
                     cabecera.setMensual(7);
                    break;
                case 8:
                     LNotas = Promedios.notasMes08(codigo);
                     cabecera.setNota1(22);
                     cabecera.setNota2(23);
                     cabecera.setNota3(24);
                     cabecera.setMensual(8);
                    break;
                case 9:
                     LNotas = Promedios.notasMes09(codigo);
                     cabecera.setNota1(25);
                     cabecera.setNota2(26);
                     cabecera.setNota3(27);
                     cabecera.setMensual(9);
                    break;
                case 21:
                        cabecera.setNota1(1);
                        cabecera.setNota2(2);
                        cabecera.setMensual(1);
                        LNotasBimestrales = Promedios.notasBimestre01(codigo);
                        LPromMes1 = Promedios.notasMes01(codigo);
                        LPromMes2 = Promedios.notasMes02(codigo);
                    break;
                case 22:
                        cabecera.setNota1(3);
                        cabecera.setNota2(4);
                        cabecera.setMensual(2);
                        LNotasBimestrales = Promedios.notasBimestre02(codigo);
                        LPromMes1 = Promedios.notasMes03(codigo);
                        LPromMes2 = Promedios.notasMes04(codigo);
                    break;
                case 23:
                        cabecera.setNota1(5);
                        cabecera.setNota2(6);
                        cabecera.setMensual(3);
                        LNotasBimestrales = Promedios.notasBimestre03(codigo);
                        LPromMes1 = Promedios.notasMes05(codigo);
                        LPromMes2 = Promedios.notasMes06(codigo);
                    break;
                case 24:
                        cabecera.setNota1(7);
                        cabecera.setNota2(8);
                        cabecera.setMensual(3);
                        LNotasBimestrales = Promedios.notasBimestre04(codigo);
                        LPromMes1 = Promedios.notasMes07(codigo);
                        LPromMes2 = Promedios.notasMes08(codigo);
                    break;
                case 31:
                    cabecera.setNota1(1);
                    cabecera.setNota2(2);
                    cabecera.setNota3(3);
                    cabecera.setMensual(1);
                    LNotasTrimestrales = Promedios.notasTrimestre01(codigo);
                    LPromMes1 = Promedios.notasMes01(codigo);
                    LPromMes2 = Promedios.notasMes02(codigo);
                    LPromMes3 = Promedios.notasMes03(codigo);
                    break;
                case 32:
                    cabecera.setNota1(4);
                    cabecera.setNota2(5);
                    cabecera.setNota3(6);
                    cabecera.setMensual(2);
                    LNotasTrimestrales = Promedios.notasTrimestre02(codigo);
                    LPromMes1 = Promedios.notasMes04(codigo);
                    LPromMes2 = Promedios.notasMes05(codigo);
                    LPromMes3 = Promedios.notasMes06(codigo);
                    break;
                case 33:
                    cabecera.setNota1(7);
                    cabecera.setNota2(8);
                    cabecera.setNota3(9);
                    cabecera.setMensual(3);
                    LNotasTrimestrales = Promedios.notasTrimestre03(codigo);
                    LPromMes1 = Promedios.notasMes07(codigo);
                    LPromMes2 = Promedios.notasMes08(codigo);
                    LPromMes3 = Promedios.notasMes09(codigo);
                    break;
            }
            ArrayList<Promedios> NuevaListaProm = new ArrayList<Promedios>();
             Utilidades oUtil = Utilidades.GradoSeccionAlumno(codigo);
             ArrayList<Horarios> LCursos = new ArrayList<Horarios>();
              LCursos = Horarios.listaCursosAlumnoSegunHorario(codigo);
             int pesoM = Promedios.PesoMes(oUtil.getCodNivel());
             int pesoPM = Promedios.PesoPromedioMes(oUtil.getCodNivel());
             int pesoB = Promedios.PesoBimTrimestral(oUtil.getCodNivel());

            if(periodo>0 && periodo<10){
                next = "/dinamica/administrador/include_consulta/result_notas_periodo.jsp";
                ArrayList<Promedios> NuevaLista = new ArrayList<Promedios>();
                NuevaLista = Promedios.OrdenarNotas(LNotas, LCursos);
                NuevaListaProm = Promedios.calculaPromedio(NuevaLista, 3, pesoM);
            }
            if(periodo>20 && periodo < 25){
                next = "/dinamica/administrador/include_consulta/result_notas_bimestre.jsp";
                ArrayList<Promedios> LPromMesOrd1 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrd2 = new ArrayList<Promedios>();
                LPromMesOrd1 = Promedios.OrdenarNotas(LPromMes1, LCursos);
                LPromMesOrd2 = Promedios.OrdenarNotas(LPromMes2, LCursos);
                ArrayList<Promedios> LPromMesOrdShow1 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrdShow2 = new ArrayList<Promedios>();
                LPromMesOrdShow1 = Promedios.calculaPromedio(LPromMesOrd1, 3, pesoM);
                LPromMesOrdShow2 = Promedios.calculaPromedio(LPromMesOrd2, 3, pesoM);
                ArrayList<Promedios> LPromBimestral = new ArrayList<Promedios>();
                Promedios notas = null;
                for(Horarios o: LCursos){
                    notas = new Promedios();
                    notas.setCurso(o.getNombreCurso());
                    for(Promedios P1: LPromMesOrdShow1){
                        if(P1.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setMes1(P1.getPromedioMes());
                        }
                    }
                    for(Promedios P2: LPromMesOrdShow2){
                        if(P2.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setMes2(P2.getPromedioMes());
                        }
                    }
                    for(Promedios NB: LNotasBimestrales){
                        if(NB.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setNotaBimestral(NB.getNotaBimestral());
                        }
                    }
                LPromBimestral.add(notas);
                }
                NuevaListaProm = new Promedios().calculaPromBimestral(LPromBimestral, 1, pesoB);
            }
            if(periodo>30 && periodo < 34){
                next = "/dinamica/administrador/include_consulta/result_notas_trimestre.jsp";
                ArrayList<Promedios> LPromMesOrd1 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrd2 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrd3 = new ArrayList<Promedios>();
                LPromMesOrd1 = Promedios.OrdenarNotas(LPromMes1, LCursos);
                LPromMesOrd2 = Promedios.OrdenarNotas(LPromMes2, LCursos);
                LPromMesOrd3 = Promedios.OrdenarNotas(LPromMes3, LCursos);
                ArrayList<Promedios> LPromMesOrdShow1 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrdShow2 = new ArrayList<Promedios>();
                ArrayList<Promedios> LPromMesOrdShow3 = new ArrayList<Promedios>();
                LPromMesOrdShow1 = Promedios.calculaPromedio(LPromMesOrd1, 3, pesoM);
                LPromMesOrdShow2 = Promedios.calculaPromedio(LPromMesOrd2, 3, pesoM);
                LPromMesOrdShow3 = Promedios.calculaPromedio(LPromMesOrd3, 3, pesoM);
                ArrayList<Promedios> LPromTrimestral = new ArrayList<Promedios>();
                Promedios notas = null;
                for(Horarios o: LCursos){
                    notas = new Promedios();
                    notas.setCurso(o.getNombreCurso());
                    for(Promedios P1: LPromMesOrdShow1){
                        if(P1.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setMes1(P1.getPromedioMes());
                        }
                    }
                    for(Promedios P2: LPromMesOrdShow2){
                        if(P2.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setMes2(P2.getPromedioMes());
                        }
                    }
                    for(Promedios P3: LPromMesOrdShow3){
                        if(P3.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setMes3(P3.getPromedioMes());
                        }
                    }
                    for(Promedios NB: LNotasTrimestrales){
                        if(NB.getCurso().equalsIgnoreCase(o.getNombreCurso())){
                            notas.setNotaTrimestral(NB.getNotaTrimestral());
                        }
                    }
                    LPromTrimestral.add(notas);
                }
                NuevaListaProm = Promedios.calculaPromTrimestral(LPromTrimestral, pesoPM, pesoB);
            }

           
//            request.setAttribute("r_estilo", true);
             request.setAttribute("nombre", request.getParameter("nombre"));
            session.setAttribute("notas", NuevaListaProm);
            session.setAttribute("cabecera", cabecera);
            session.setAttribute("codPersona", codigo);
//             Vector<Promedios> L = (Vector<Promedios>)session.getAttribute("notas");
//            out.println(L.size());
//            Promedios c = (Promedios)session.getAttribute("cabecera");
//            out.println(c.getNota1());
            rd=this.getServletContext().getRequestDispatcher(next);
            rd.forward(request,response);
        } finally {
            out.close();
        }
    }
    

    protected void horariosDocente(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        try {
            int cod = Integer.parseInt(session.getAttribute("codPersona").toString());   
             
             List<Docente> LDocentes = new ArrayList<Docente>();
             //277 de EBLANCOR
             LDocentes = Docente.NombreDocentesPorAñoAcademico(277);
             
             if(request.getParameter("cboDocente")==null){
                 // Docente oDocente = new Docente();
                  UsuarioWeb oUsuario = new UsuarioWeb();
                  oUsuario = UsuarioWeb.datosUsuarioWeb(1017);
                 // oDocente = Docente.NombreDocentesAnioPorCodigo(277);
                  request.setAttribute("usuario", oUsuario);
                  System.out.print(oUsuario);              
                  //request.setAttribute("docente", oDocente);
                  request.setAttribute("lista", LDocentes);

                  this.getServletContext().getRequestDispatcher("/dinamica/administrador/Horarios/horarioDocentes.jsp").forward(request, response);
             }
             else {
                 if(request.getParameter("cboDocente")!=null)
                  {
              ArrayList<Horarios> LHorarios = new ArrayList<Horarios> ();
              int codDocente = Integer.parseInt(request.getParameter("cboDocente"));
              LHorarios = new Horarios().HorarioDocentePorCodigoPersonaProfesor(codDocente);
              
            
              
              System.out.println("COLECCION:  "+new Gson().toJson(LHorarios));
              response.getWriter().write(new Gson().toJson(LHorarios));
                }
             }
            
            
         
           
        } finally {
            out.close();
        }
    }

protected void ResumenAsistencia(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           HttpSession session = request.getSession(true);
           RequestDispatcher rd;
           Vector<Asistencias> LResumen  = new Vector<Asistencias>();
            Calendar cal = GregorianCalendar.getInstance();
            int cod = Integer.parseInt(request.getParameter("codigo"));
            int mes = Integer.parseInt(request.getParameter("cboPeriodo"));
            int anio = Integer.parseInt(request.getParameter("anio"));
            cal.set(anio, mes, 1);
            String fechaDesde =  cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
            String fechaHasta = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) + "/" + (mes + 1) + "/" + (anio );
         //   LResumen = Asistencias.resumenAsistenciaAlumnoPorCodigoFechaDesdeYHasta(cod, fechaDesde, fechaHasta);
            String periodo = fechaDesde + " - " +fechaHasta;
            request.setAttribute("r_estilo", true);
            String next = "/dinamica/administrador/include_consulta/rpt_asistencias_alumno.jsp";
            session.setAttribute("resumenAsistencia", LResumen);
            session.setAttribute("periodo", periodo);
            session.setAttribute("codPersona", cod);
            rd = rd=this.getServletContext().getRequestDispatcher(next);
            rd.forward(request,response);
        } finally {
            out.close();
        }
    }

protected void calendarioAsistencia(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

            Calendar cal = GregorianCalendar.getInstance();
            int cod = Integer.parseInt(request.getParameter("codigo"));
            int mes = Integer.parseInt(request.getParameter("cboPeriodo"));
            int anio = Integer.parseInt(request.getParameter("anio"));
            cal.set(anio, mes, 1);
            int diaInicio =  cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH) ;
            int diaFinal = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) ;
            List<Asistencias> fechasNoAsistencia = new ArrayList<Asistencias>();
            for(int i=diaInicio;i<=diaFinal;i++){
                if((Asistencias.verificaSabadoDomingo(i+"/" + (mes + 1) + "/" + anio)!=0)&& (Asistencias.verificaSabadoDomingo(i+"/" + (mes + 1) + "/" + anio)!=6)){
                    Asistencias o = new Asistencias();
                    o.setDia(""+i);
                    o.setMes(""+(mes + 1));
                    o.setAnio(""+anio);
                    if(!Asistencias.asistenciaPuntualPorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                        if(Asistencias.asistenciaTardePorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                            o.setEstado_asistencia("T");
                            fechasNoAsistencia.add(o);
                        }else{
                             if(Asistencias.asistenciaJustificacionPorFecha(cod, i+"/" + (mes + 1) + "/" + anio)){
                                o.setEstado_asistencia("J");
                                fechasNoAsistencia.add(o);
                             }else{
                                o.setEstado_asistencia("F");
                                fechasNoAsistencia.add(o);
                             }
                        }
                    }else{
                        o.setEstado_asistencia("A");
                        fechasNoAsistencia.add(o);
                    }
                 }
            }

//            out.println(1 +"/" + (mes+1) + "/" + anio);
//            out.println(fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio());
//            out.println(Asistencias.verificaSabadoDomingo( 1 +"/" + (mes+1) + "/" + anio));
//            out.println(Asistencias.verificaSabadoDomingo( fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio() ));
            request.setAttribute("codigo", cod);
            request.setAttribute("periodo", diaInicio +"/" + (mes + 1) + "/" + anio + " - " + diaFinal +"/" + (mes + 1) + "/" + anio);
            request.setAttribute("inicio",Asistencias.verificaSabadoDomingo( fechasNoAsistencia.get(0).getDia() + "/" + fechasNoAsistencia.get(0).getMes() + "/" + fechasNoAsistencia.get(0).getAnio()));
            request.setAttribute("lista", fechasNoAsistencia);
            request.setAttribute("nombre", request.getParameter("nombre"));
            this.getServletContext().getRequestDispatcher("/dinamica/administrador/include_consulta/rpt_asistencias_calendario.jsp").forward(request, response);

        } finally {
            out.close();
        }
    }

   // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
    * Returns a short description of the servlet.
    */
   
    public String getServletInfo() {
        return "Short description";
    }
   
    // </editor-fold>

}
